import { request, apiUrl } from '@/api/request';

/**
 * 获取音乐 url
 * 说明 : 使用歌单详情接口后 , 能得到的音乐的 id, 但不能得到的音乐 url, 调用此接口, 传入
 * 的音乐 id( 可多个 , 用逗号隔开 ), 可以获取对应的音乐的 url,未登录状态或者非会员返回
 * 试听片段(返回字段包含被截取的正常歌曲的开始时间和结束时间)
 * 注 : 部分用户反馈获取的 url 会 403,hwaphon找到的解决方案是当获取到音乐的 id后，
 * 将 https://music.163.com/song/media/outer/url?id=id.mp3 以 src 赋予 Audio 即
 * 必选参数 : id : 音乐 id
 * 可选参数 : br: 码率,默认设置了 999000 即最大码率,如果要 320k 则可设置为 320000,其他类推
 * 接口地址：'/song/url'
 */
type SongUrl = {
  id: number | string;
  br?: number;
}
export function getSongUrl(params: SongUrl) {
  return request(apiUrl.SONG_URL, params);
}

/**
 * 如果获取音乐地址不可用时调用
 * 说明: 调用此接口,传入歌曲 id, 可获取音乐真实地址
 * 必选参数 : id : 歌曲 id
 * 接口地址：
 */
export function getRealSongUrl(id: number | string) {
  return `https://music.163.com/song/media/outer/url?id=${id}.mp3`;
}

/**
 * 获取歌曲详情
 * 说明 : 调用此接口 , 传入音乐 id(支持多个 id, 用 , 隔开), 可获得歌曲详情
 * 接口地址：/song/detail
 */
export function getSongDetail(ids: string) {
  return request(`${apiUrl.SONG_DETAIL}?ids=${ids}`);
}

/**
 * 音乐是否可用
 * 说明: 调用此接口,传入歌曲 id, 可获取音乐是否可用,
 * 返回 { success: true, message: 'ok' }
 * 或者 { success: false, message: '亲爱的,暂无版权' }
 * 必选参数 : id : 歌曲 id
 * 可选参数 : br: 码率,默认设置了 999000 即最大码率,如果要 320k 则可设置为 320000,其他类推
 * 接口地址：'/check/music'
 */
type CheckMusic = {
  id: number | string;
  br?: number;
}
export function getCheckMusic(params: CheckMusic) {
  return request(apiUrl.CHECK_MUSIC, params);
}

/**
 * 获取歌词
 * 调用此接口 , 传入音乐 id 可获得对应音乐的歌词 ( 不需要登录 )
 * 必选参数 : id: 音乐 id
 * 接口地址 : /lyric
 * http://music.163.com/api/song/lyric?id=488249475&lv=1&kv=1&tv=1
 */
export function getSongLyric(id: string | number) {
  return request(`${apiUrl.LYRIC}?id=${id}`);
  // return request(`http://music.163.com/api/song/lyric?id=${id}&lv=1&kv=1&tv=1`);
}
